/**
 * ZHNAG
 * 
 * @name 用户管理
 * @table SYS_USER
 * @author 704737865@QQ.COM
 * @time 2013-08-5
 * @type {}
 */
Ext.require(['Ext.grid.*', 'Ext.toolbar.Paging', 'Ext.data.*']);
Ext.QuickTips.init();

var yhgl = {
	id : 'yhgl',
	init : function() {
		var me = this;
		return me.getView();
	},
	yhglUserStoreParams : {},
	/**
	 * 初始化用户菜单
	 * 
	 */
	getTree : function() {
		var me = this;
		var store = Ext.create('Ext.data.TreeStore', {
					storeId : 'yhglGroupStore',
					root : {
						id : 'rootNode',
						iconCls : 'group-icon',
						text : "所有部门",
						expanded : true
					},
					proxy : new Ext.data.HttpProxy({
								url : 'GetGroupMenu',
								method : 'post',
								reader : {
									type : 'json'
								}
							}),
					listeners : {
						'beforeload' : function(_store) {
							// 在数据加载之前设置向后台发送的参数
							var new_params = { // 参数
								'parent' : 'rootNode'
							};
							Ext.apply(_store.proxy.extraParams, new_params);
						}
					}
				});

		var tree = Ext.create('Ext.tree.TreePanel', {
					id : 'tree',
					title : '用户菜单',
					width : 220,
					store : store,
					rootVisible : true,
					collapsible : false,
					singleExpand : true,
					dockedItems : [{
								xtype : 'toolbar',
								items : [{
											text : '全部展开',
											handler : function() {
												tree.expandAll();
											}
										}, {
											text : '全部闭合',
											handler : function() {
												tree.collapseAll();
											}
										}]
							}],
					listeners : {
						'itemclick' : function(view, record, item, index, e,
								eOpts) {
							var groupId = record.raw.id;
							if (groupId == 'rootNode') {
								groupId = '1';
							}
							yhgl.yhglUserStoreParams.groupId = groupId;
							Ext.data.StoreManager.lookup('yhglUserStore')
									.load();
						},
						'itemcontextmenu' : function(view, record, item, index,
								e, eOpts) {
							e.preventDefault();
							var groupId = record.raw.id;
							if (groupId == 'rootNode') {
								groupId = '1';
							}
							var disabled = false;
							if (groupId == "1") {
								disabled=true;
							}
							var menu = new Ext.menu.Menu({
										items : [{
													text : '新建部门',
													iconCls : 'icon-add',
													handler : function() {
														me.doEditGroup(record,
																"save");
													}
												}, {
													iconCls : 'icon-edit',
													text : '编辑部门',
													disabled:disabled,
													handler : function() {
														me.doEditGroup(record,
																"update");
													}
												}, {
													iconCls : 'icon-delete',
													text : '删除部门',
													disabled:disabled,
													handler : function() {
														me
																.doDeleteGroup(groupId);
													}

												}]
									});
							menu.showAt(e.getPoint());
						}
					}
				});
		return tree;
	},
	doEditGroup : function(record, action) {
		var me = this;
		var win;
		var winwidth = 368;
		var winheight = 308;

		Ext.define('TreeComboBoxEditGroup', {
			extend : 'Ext.form.field.ComboBox',
			alias : 'combforcs',
			id : 'combo_edit_group',
			name : 'cs',
			fieldLabel : '上级部门',
			labelWidth : 70,
			labelAlign : 'right',
			store : new Ext.data.ArrayStore({
						fields : [],
						data : [[]]
					}),
			editable : false,
			allowBlank : false,
			blankText : '该项必填',
			_idValue : null,
			_txtValue : null,
			triggerAction : 'all',
			width : 300,
			maxHeight : 200,
			tpl : "<div id='combo_edit_group_tree'></div>",
			readOnly : false,
			onSelect : Ext.emptyFn,
			emptyText : '请选择...',
			getValue : function() { // 获取id值
				return this._idValue;
			},
			getTextValue : function() { // 获取text值
				return this._txtValue;
			},
			setLocalValue : function(txt, id) { // 设值
				this._idValue = id;
				this.setValue(this._txtValue = txt);
			},
			initComponent : function() {
				this.callParent(arguments);
				this.on({
					'expand' : function() {
						if (!this.treeObj.rendered && this.treeObj
								&& !this.readOnly) {
							Ext.defer(function() {
										this.treeObj
												.render("combo_edit_group_tree");
									}, 300, this);
						}
					}
				});
				this.treeObj = new Ext.tree.Panel({
					border : true,
					id : 'technicalTreePanel',
					width : 250,
					height : 200,
					split : true,
					rootVisible : false,
					autoScroll : true,
					store : Ext.create('Ext.data.TreeStore', {
						root : {
							id : 'rootNode',
							text : "根节点",
							expanded : false
						},
						proxy : new Ext.data.HttpProxy({
									url : 'yhgl/GetComboTree',
									method : 'post',
									reader : {
										type : 'json'
									}
								}),
						listeners : {
							'beforeload' : function(_store) {
								var new_params = {
									'parent' : 'rootNode'
								};
								Ext.apply(_store.proxy.extraParams, new_params);
							}
						}
					})
				});
				this.treeObj.on('itemclick', function(view, rec) {
							if (rec) {
								this.setValue(this._txtValue = rec.get('text'));
								this._idValue = rec.get('id');
								this.collapse();
							}
						}, this);
			}
		});
		var treeobj = new TreeComboBoxEditGroup();
		var panel = new Ext.Panel({
			border : false,
			layout : 'anchor',
			style : me.background,
			buttons : [{
						text : '保存',
						iconCls : 'icon-save',
						handler : function() {
							if(action=='save'){
								me.doSave(action, null, win, treeobj);
							}else{
								me.doSave(action, record, win, treeobj);
							}
						}
					}, {
						text : '重置',
						iconCls : 'icon-reset',
						handler : function() {
							Ext.getCmp(me.id + 'updateform1').getForm().reset();
						}
					}, {
						text : '取消',
						iconCls : 'icon-delete',
						handler : function() {
							win.close();
						}
					}],
			items : [{
						xtype : 'panel',
						border : false,
						height : 20
					}, {
						xtype : 'form',
						id : me.id + 'updateform1',
						anchor : '100%',
						border : false,
						items : [{
									fieldLabel : '部门名称',
									id : me.id + 'update' + 'groupname',
									width : 300,
									labelWidth : 70,
									labelAlign : 'right',
									xtype : 'textfield'
								}, treeobj, {
									fieldLabel : '部门描述',
									width : 300,
									labelWidth : 70,
									labelAlign : 'right',
									id : me.id + 'update' + 'groupcomment',
									xtype : 'textfield'

								}, {
									fieldLabel : '部门编码',
									width : 300,
									labelWidth : 70,
									labelAlign : 'right',
									id : me.id + 'update' + 'groupbm',
									xtype : 'textfield'
								}, {
									fieldLabel : '部门电话',
									width : 300,
									labelWidth : 70,
									labelAlign : 'right',
									id : me.id + 'update' + 'groupdh',
									xtype : 'textfield'
								}, {
									fieldLabel : '部门图标',
									width : 300,
									labelWidth : 70,
									labelAlign : 'right',
									id : me.id + 'update' + 'groupimg',
									xtype : 'textfield'
								}]
					}]
		});
		var tpit = '新建部门';
		if (action == 'update') {
			tpit = '修改部门';
		}
		me.doLoadFormData(record, treeobj, action);
		win = new Ext.Window({
					title : tpit,
					modal : true,
					width : winwidth,
					height : winheight,
					layout : 'fit',
					items : [panel]
				});
		win.show();
	},
	/**
	 * 编辑的时候赋值
	 * 
	 * @param {}
	 *            panel
	 * @param {}
	 *            record
	 */
	doLoadFormData : function(record, treeobj, action) {
		var me = this;
		if (action == 'update') {
			Ext.getCmp(me.id + 'updategroupname').setValue(record.raw.text);
			Ext.getCmp(me.id + 'updategroupcomment')
					.setValue(record.raw.comment);
			Ext.getCmp(me.id + 'updategroupbm').setValue(record.raw.bm);
			Ext.getCmp(me.id + 'updategroupdh').setValue(record.raw.dh);
		}
		treeobj.setLocalValue(record.raw.text, record.raw.id);
	},
	/**
	 * 保存数据
	 * 
	 * @param {}
	 *            action
	 * @param {}
	 *            record
	 * @param {}
	 *            panel
	 * @param {}
	 *            win
	 * @return {Boolean}
	 */
	doSave : function(action, record, win, treeobj) {
		var me = this;
		var params = {};
		var groupname = Ext.getCmp(me.id + 'updategroupname').getValue();
		var groupparentid = treeobj.getValue();
		var groupcomment = Ext.getCmp(me.id + 'updategroupcomment').getValue();
		var groupbm = Ext.getCmp(me.id + 'updategroupbm').getValue();
		var groupdh = Ext.getCmp(me.id + 'updategroupdh').getValue();
		var groupimg = Ext.getCmp(me.id + 'updategroupimg').getValue();
		if (!groupname || !groupparentid) {
			utils.hideAutoNotification('提示', '请输入部门名称和上级部门!');
			return false;
		}
		if(groupparentid=='rootNode'){
			groupparentid = '1';
		}
		params = {
			groupname : groupname,
			groupparentid : groupparentid,
			groupcomment : groupcomment,
			groupbm : groupbm,
			groupdh : groupdh,
			groupimg : groupimg
		}
		params.action = 'save';
		if (record != null) {
			params.groupid = record.raw.id;
			params.actionType = "update";
		} else {
			params.actionType = "save";
		}
		me.saveTolDb(params, win, record);
	},
	saveTolDb : function(params, win, record) {
		var me = this;
		var isfileupload = true;
		var myMask = new Ext.LoadMask(Ext.getBody(), {
					msg : "数据保存中,请稍后......"
				});
		myMask.show();
		Ext.Ajax.request({
					url : "yhgl/ModifyGroupServlet",
					method : "POST",
					params : params,
					success : function(response, options) {
						if (response.responseText
								&& response.responseText.length > 0) {
							var result = Ext.JSON.decode(response.responseText);
							if (result.success) {
								if (result.type == 1) {
									if (win) {
										win.close();
									}
									Ext.data.StoreManager
											.lookup('yhglGroupStore').reload();
									utils.hideAutoNotification('提示',
											result.message);
								} else {
									Ext.Msg.show({
												icon : Ext.MessageBox.ERROR,
												buttons : Ext.Msg.OK,
												title : '错误',
												msg : result.message
											});
								}
							} else {
								utils.showLoginWin(json.errors.messages);
							}
							myMask.hide();
						}
					},
					failure : function(response, options) {
						myMask.hide();
						Ext.Msg.show({
									icon : Ext.MessageBox.ERROR,
									buttons : Ext.Msg.OK,
									title : '错误',
									msg : '数据保存失败!'
								});
					}
				});

	},
	doDeleteGroup : function(groupid) {
		var me = this;
		Ext.MessageBox.confirm("请确认", "您确定要删除选定的部门吗？删除后无法恢复！", function(button,
				text) {
			if (button == "yes") {
				var myMask = new Ext.LoadMask(Ext.getBody(), {
							msg : "数据保存中,请稍后......"
						});
				myMask.show();
				Ext.Ajax.request({
					url : "yhgl/ModifyGroupServlet",
					method : "POST",
					params : {
						groupid : groupid,
						action : 'delete'
					},
					success : function(response, options) {
						if (response.responseText
								&& response.responseText.length > 0) {
							var result = Ext.JSON.decode(response.responseText);
							if (result.success) {
								if (result.type == 1) {
									utils.hideAutoNotification('提示',
											result.message);
									Ext.data.StoreManager
											.lookup('yhglGroupStore').reload();
								} else {
									Ext.Msg.show({
												icon : Ext.MessageBox.ERROR,
												buttons : Ext.Msg.OK,
												title : '错误',
												msg : result.message
											});
								}
							} else {
								utils.showLoginWin(json.errors.messages);
							}
						}
						myMask.hide();
					},
					failure : function(response, options) {
						Ext.Msg.show({
									icon : Ext.MessageBox.ERROR,
									buttons : Ext.Msg.OK,
									title : '错误',
									msg : '删除数据失败!'
								});
					}
				});
			}
		});
	},
	/**
	 * 用户列表信息
	 */
	getUser : function() {
		var me = this;
		var userstore = Ext.create('Ext.data.Store', {
					storeId : 'yhglUserStore',
					pageSize : 15,
					proxy : {
						method : 'post',
						type : 'ajax',
						url : 'yhgl/findUser',
						reader : {
							type : 'json',
							root : 'list',
							totalProperty : "totalCount"
						}
					},
					fields : ['USER_ID', 'USER_PASSWORD', 'USER_NAME', 'CSID',
							'USER_FLAG', 'USER_SEX', 'ROLE_ID', 'GROUP_NAME',
							'ROLE_NAME'],
					listeners : {
						beforeload : function(store) {
							Ext.apply(store.proxy.extraParams,
									yhgl.yhglUserStoreParams);
						}
					}
				});
		userstore.load({
					params : {
						start : 0,
						limit : 15
					}
				});
		var selModel = Ext.create('Ext.selection.CheckboxModel');
		var Usergrid = Ext.create('Ext.grid.GridPanel', {
			id : 'gridId',
			border : false,
			selModel : selModel,
			store : userstore,
			viewConfig : {
				stripeRows : true,
				enableTextSelection : true
			},
			columns : [{
						header : '账号',
						dataIndex : 'USER_ID'
					}, {
						header : '姓名',
						dataIndex : 'USER_NAME'
					}, {
						header : '性别',
						dataIndex : 'USER_SEX',
						renderer : function(v) {
							if (v == 1 || v == '1') {
								return '男性';
							}
							if (v == 2 || v == '2') {
								return '女性';
							}
							return '未知性别';
						}
					}, {
						header : '角色',
						dataIndex : 'ROLE_NAME'
					}, {
						header : '部门',
						dataIndex : 'GROUP_NAME'
					}, {
						header : '是否有效',
						dataIndex : 'USER_FLAG',
						renderer : function(v) {
							if (v == 1 || v == '1') {
								return '有效';
							}
							return '无效';
						}
					}, {
						xtype : 'actioncolumn',
						header : '修改',
						width : 50,
						items : [{
							icon : 'module/images/sys/table_edit.gif',
							handler : function(grid, rowIndex, colIndex) {
								var rec = grid.getStore().getAt(rowIndex);
								me.updateJs({});
								var roleid = rec.get("ROLE_ID");
								var csid = rec.get("CSID");
								var rolename = "";
								var csname = "";
								Ext.Ajax.request({
									url : 'yhgl/FindSJ',
									params : {
										roleid : roleid,
										csid : csid
									},
									success : function(response, options) {
										var jsonobject = Ext.JSON
												.decode(response.responseText);
										if (jsonobject.success) {
											rolename = jsonobject.data.rolename;
											csname = jsonobject.data.csname;
											Ext
													.getCmp("cs_com")
													.setValue(this.CtxtValue = csname);
											Ext.getCmp("roleId1")
													.setRawValue(rolename);
										}
									}
								});
								Ext.getCmp("id1").setValue(rec.get("USER_ID"));
								Ext.getCmp("usernameId1").setValue(rec
										.get("USER_NAME"));
								Ext.getCmp("sexId1").setValue(rec
										.get("USER_SEX"));
								Ext.getCmp("flagId1").setValue(rec
										.get("USER_FLAG"));
								Ext.getCmp("roleId1").setValue(roleid);
								Ext.getCmp("cs_com").CidValue = csid;
							}
						}]
					}],
			tbar : [{
						text : '新建用户',
						iconCls : 'icon-add',
						handler : function() {
							me.addJs({}, true);
						}
					}, {
						text : '删除',
						iconCls : 'icon-delete',
						handler : function() {
							var record = Usergrid.getSelectionModel()
									.getSelection();
							if (record.length == 0) {
								Ext.MessageBox.show({
											title : '提示',
											msg : '请选择要删除的操作行 ',
											buttons : Ext.MessageBox.OK,
											icon : Ext.MessageBox.OK
										});
								return;
							} else {
								var ids = "";
								for (var i = 0; i < record.length; i++) {
									ids += record[i].get("USER_ID");
									if (i < record.length - 1) {
										ids = ids + ",";
									}
								}
							}
							Ext.Ajax.request({
								url : 'yhgl/DeleteUser',
								params : {
									ids : ids
								},
								success : function(response, options) {
									var jsonobject = Ext.JSON
											.decode(response.responseText);
									if (jsonobject.success) {
										if (jsonobject.data.rs == 1) {
											utils.hideAutoNotification("成功",
													"用户删除成功");
											Ext.data.StoreManager
													.lookup('yhglUserStore')
													.load();
										}
										if (jsonobject.data.rs == 2) {
											Ext.MessageBox.show({
														title : '提示',
														msg : '用户删除失败',
														buttons : Ext.MessageBox.OK,
														icon : Ext.MessageBox.ERROR
													});
										}
									} else {
										utils
												.showLoginWin(json.errors.messages);
									}
								},
								failure : function(response, options) {
									Ext.MessageBox.show({
												title : '错误',
												msg : '服务器连接错误，用户删除失败！',
												buttons : Ext.MessageBox.OK,
												icon : Ext.MessageBox.ERROR
											});
								}
							})
						}
					}],

			bbar : Ext.create('Ext.PagingToolbar', {
						store : userstore,
						displayInfo : true,
						displayMsg : '显示 {0} - {1} 条，共计 {2} 条',
						emptyMsg : "没有数据"
					}),
			renderTo : Ext.getBody()

		});
		return Usergrid;
	},
	/**
	 * 角色保存
	 * 
	 * @param record {}
	 *            事件节点
	 * @param flag
	 *            {boolean} true-新建
	 */

	addJs : function(record, flag) {

		var me = this;
		var roleStore = Ext.create('Ext.data.Store', {
					fields : [{
								name : 'name'
							}, {
								name : 'value'
							}],
					proxy : {
						type : 'ajax',
						url : 'yhgl/GetTotalRoles',
						reader : {
							type : 'json',
							root : 'js'
						}
					},
					autoLoad : false
				});
		roleStore.load({
					params : {},
					scope : this
				});
		Ext.define('TreeComboBox', {
			extend : 'Ext.form.field.ComboBox',
			alias : 'combforcs',
			id : 'combo_cs',
			name : 'cs',
			fieldLabel : '部门',
			labelWidth : 70,
			labelAlign : 'right',
			store : new Ext.data.ArrayStore({
						fields : [],
						data : [[]]
					}),
			editable : false,
			allowBlank : false,
			blankText : '该项必填',
			_idValue : null,
			_txtValue : null,
			triggerAction : 'all',
			width : 300,
			maxHeight : 200,
			tpl : "<div id='tree2'></div>",
			readOnly : false,
			onSelect : Ext.emptyFn,
			emptyText : '请选择...',
			getValue : function() { // 获取id值
				return this._idValue;
			},
			getTextValue : function() { // 获取text值
				return this._txtValue;
			},
			setLocalValue : function(txt, id) { // 设值
				this._idValue = id;
				this.setValue(this._txtValue = txt);
			},
			initComponent : function() {
				this.callParent(arguments);
				this.on({
							'expand' : function() {
								if (!this.treeObj.rendered && this.treeObj
										&& !this.readOnly) {
									Ext.defer(function() {
												this.treeObj.render("tree2");
											}, 300, this);
								}
							}
						});
				this.treeObj = new Ext.tree.Panel({
					border : true,
					id : 'technicalTreePanel',
					width : 250,
					height : 200,
					split : true,
					rootVisible : false,
					autoScroll : true,
					store : Ext.create('Ext.data.TreeStore', {
						root : {
							id : 'rootNode',
							text : "根节点",
							expanded : false
						},
						proxy : new Ext.data.HttpProxy({
									url : 'yhgl/GetComboTree',
									method : 'post',
									reader : {
										type : 'json'
									}
								}),
						listeners : {
							'beforeload' : function(_store) {
								// 在数据加载之前设置向后台发送的参数
								var new_params = { // 参数
									'parent' : 'rootNode'
								};
								Ext.apply(_store.proxy.extraParams, new_params);
							}
						}
					})
				});
				this.treeObj.on('itemclick', function(view, rec) {
							if (rec) {
								this.setValue(this._txtValue = rec.get('text'));
								this._idValue = rec.get('id');
								this.collapse();
							}
						}, this);
			}
		});
		var panel = Ext.create('Ext.form.FormPanel', {
			id : me.id + '_addjs',
			title : "新建用户",
			titleAlign : "left",
			frame : false,
			border : false,
			plain : true,
			layout : 'anchor',
			region : 'center',
			defaults : {
				xtype : 'textfield'
			},
			tbar : [{
						text : '保存',
						iconCls : 'icon-save',
						handler : function() {
							me.saveJs(record, flag);
						}
					}, {
						text : '返回',
						iconCls : 'icon-reback',
						handler : function() {
							me.centerPanelDo(me.getEdTree());
						}
					}, {
						text : '重置',
						iconCls : "icon-reset",
						handler : function() {
							Ext.getCmp(me.id + '_addjs').form.reset();
						}
					}],
			items : [{
				xtype : 'panel',
				layout : 'column',
				width : 600,
				height : 60,
				border : false,
				items : [{
					xtype : 'panel',
					width : 250,
					layout : 'form',
					border : false,
					padding : 10,
					defaultType : 'textfield',
					items : [{
						name : 'userId',
						fieldLabel : '帐号',
						width : 120,
						labelWidth : 60,
						labelAlign : 'right',
						allowBlank : false,
						id : 'add_yggl_id',
						maxLength : 20,
						maxLengthText : '帐号长度不能超过20个字符',
						minLength : 2,
						minLengthText : '帐号长度不能少于2个字符',
						blankText : '该项必填',
						selectOnFocus : true,
						listeners : {
							blur : function(field) {
								var cmp = Ext.getCmp(field.id);
								var value = cmp.getValue();
								if (!value) {
									return;
								}
								Ext.Ajax.request({
									url : 'yhgl/checkUserId',
									async : false,
									params : {
										"id" : value
									},
									method : 'POST',
									success : function(response, options) {
										var json = Ext.JSON
												.decode(response.responseText);
										if (json.success) {

											if (Number(json.rs) == 2) {
												Ext.MessageBox.show({
															title : '错误',
															msg : '此账号已存在，请重新输入',
															icon : Ext.Msg.ERROR,
															buttons : Ext.Msg.OK
														});
												Ext.getCmp(field.id).reset();

											}

										}
									}
								});

							}
						}
					}, {
						name : 'username',
						width : 120,
						labelWidth : 60,
						labelAlign : 'right',
						fieldLabel : '姓名',
						id : 'usernameId',
						allowBlank : false,
						regex : /^[a-zA-Z\u4e00-\u9fa5](\s*[a-zA-Z\u4e00-\u9fa5])*$/,
						regexText : '该项限输入英文、中文、中英文(字符之间可由空格隔开,首尾不能有空格)！',
						minLength : 2,
						minLengthText : '用户名长度不能少于2个字符',
						maxLength : 15,
						maxLengthText : '用户名长度不能超过15个字符',
						blankText : '该项必填'
					}]
				}, {
					xtype : 'panel',
					width : 250,
					layout : 'form',
					border : false,
					padding : 10,
					defaultType : 'textfield',
					items : [{
								width : 120,
								labelWidth : 60,
								labelAlign : 'right',
								inputType : 'password',
								id : 'pass1',
								name : 'password',
								fieldLabel : '密码',
								allowBlank : false,
								maxLength : 30,
								maxLengthText : '密码长度不能超过30个字符',
								minLength : 6,
								minLengthText : '密码长度不能少于6个字符',
								blankText : '该项必填'

							}, {
								width : 120,
								labelWidth : 60,
								labelAlign : 'right',
								inputType : 'password',
								name : 'confirmPassword',
								fieldLabel : '确认密码',
								id : 'pass2',
								allowBlank : false,
								maxLength : 30,
								maxLengthText : '密码长度不能超过30个字符',
								minLength : 6,
								minLengthText : '密码长度不能少于6个字符',
								blankText : '该项必填',
								initialPassField : 'pass',
								vtype : "repetition",
								repetition : {
									targetCmpid : 'pass1'
								}
							}]
				}]
			}, {
				xtype : 'radiogroup',
				width : 250,
				labelWidth : 70,
				labelAlign : 'right',
				fieldLabel : '性别',
				items : [{
							boxLabel : '男',
							inputValue : '1',
							id : 'sexId',
							name : 'sex',
							checked : true
						}, {
							boxLabel : '女',
							inputValue : '0',
							name : 'sex'
						}]
			}, {
				xtype : 'radiogroup',
				width : 250,
				labelWidth : 80,
				labelAlign : 'right',
				fieldLabel : '账号是否有效',
				items : [{
							boxLabel : '是',
							id : 'flagId',
							inputValue : '1',
							name : 'flag',
							checked : true
						}, {
							boxLabel : '否',
							inputValue : '0',
							name : 'flag'
						}]
			}, {
				xtype : 'combo',
				id : 'roleId',
				fieldLabel : '权限',
				width : 250,
				labelWidth : 70,
				labelAlign : 'right',
				name : 'role',
				store : roleStore,
				editable : true,
				queryMode : 'local',
				displayField : 'name',
				valueField : 'value',
				forceSelection : true,
				triggerAction : 'all',
				emptyText : '请选择...',
				selectOnFocus : true,
				autoShow : true,
				allowBlank : false,
				blankText : '该项必填'
			}, new TreeComboBox]
		});

		me.centerPanelDo(panel);
		Ext.apply(Ext.form.field.VTypes, {
					repetition : function(val, field) {
						if (field.repetition) {
							var cmp = Ext.getCmp(field.repetition.targetCmpid);
							if (Ext.isEmpty(cmp)) {
								Ext.MessageBox.show({
											title : '错误',
											msg : '发生异常，指定的组件未找到',
											icon : Ext.Msg.ERROR,
											buttons : Ext.Msg.OK
										});
								return false;
							}
							if (val == cmp.getValue()) {
								return true;
							} else {
								return false;
							}
						}
					},
					repetitionText : '两次密码输入不一致'
				});
	},
	saveJs : function(record, flag) {
		var me = this;
		var userId = Ext.getCmp("add_yggl_id").getValue();
		var username = Ext.getCmp("usernameId").getValue();
		var password = Ext.getCmp("pass1").getValue();
		var confirPassword = Ext.getCmp("pass2").getValue();
		var sex = Ext.getCmp("sexId").getGroupValue();
		var flag = Ext.getCmp("flagId").getGroupValue();
		var role = Ext.getCmp("roleId").getValue();
		var csid = Ext.getCmp("combo_cs").getValue();
		Ext.Ajax.request({
			url : 'yhgl/AddUser',
			params : {
				userId : userId,
				username : username,
				flag : flag,
				sex : sex,
				role : role,
				password : password,
				csid : csid,
				confirPassword : confirPassword
			},
			success : function(response, options) {
				var jsonobject = Ext.JSON.decode(response.responseText);
				if (jsonobject.success) {
					if (jsonobject.data.rs == 1) {
						utils.hideAutoNotification("成功", "新用户保存成功");
						me.centerPanelDo(me.getEdTree());
					}
					if (jsonobject.data.rs == 2) {
						Ext.MessageBox.show({
									title : '失败',
									msg : '保存失败，请检查相关数据是否填写完整',
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.ERROR
								});
					}
				} else {
					utils.showLoginWin(json.errors.messages);
				}
			},
			failure : function(response, options) {
				if (action.failureType == Ext.form.Action.SERVER_INVALID) {
					var jsonobject = Ext.JSON.decode(response.responseText);
					if (jsonobject.errors.type == '1') {
						Ext.MessageBox.show({
									title : '警告',
									msg : jsonobject.errors.message,
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.WARNING
								});
					} else if (jsonobject.errors.type == '2') {
						Ext.MessageBox.show({
									title : '错误',
									msg : jsonobject.errors.message,
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.ERROR
								});
					} else if (jsonobject.errors.type == '3') {

						loginWindow.setMessage(jsonobject.errors.message);
						loginWindow.show();
					}
				} else if (action.failureType == Ext.form.Action.CONNECT_FAILURE) {
					Ext.MessageBox.show({
								title : '错误',
								msg : '服务器连接失败，请稍候再试！',
								buttons : Ext.MessageBox.OK,
								icon : Ext.MessageBox.ERROR
							});
				}
			}

		})
	},
	/**
	 * 
	 * 修改用户
	 * 
	 * @return {}
	 */
	updateJs : function(record, flag) {
		var me = this;
		var roleStore = Ext.create('Ext.data.Store', {
					fields : [{
								name : 'name'
							}, {
								name : 'value'
							}],
					proxy : {
						type : 'ajax',
						url : 'yhgl/GetTotalRoles',
						reader : {
							type : 'json',
							root : 'js'
						}
					},
					autoLoad : false
				});
		roleStore.load({
					params : {},
					scope : this
				});
		Ext.define('TreeComboBox1', {
			extend : 'Ext.form.field.ComboBox',
			alias : 'combforcs',
			id : 'cs_com',
			name : 'cs',
			fieldLabel : '场所',
			store : new Ext.data.ArrayStore({
						fields : [],
						data : [[]]
					}),
			editable : false,
			allowBlank : false,
			blankText : '该项必填',
			CidValue : null,
			CtxtValue : null,
			triggerAction : 'all',
			fieldLabel : '部门',
			labelWidth : 70,
			labelAlign : 'right',
			width : 300,
			maxHeight : 200,
			tpl : "<div id='tree3'></div>",
			readOnly : false,
			onSelect : Ext.emptyFn,
			emptyText : '请选择...',
			getCidValue : function() {
				return this.CidValue;
			},
			getTextValue : function() {
				return this.CtxtValue;
			},
			setLocalValue : function(txt, id) {
				this.CidValue = id;
				this.setValue(this.CtxtValue = txt);
			},
			initComponent : function() {
				this.callParent(arguments);
				this.on({
							'expand' : function() {
								if (!this.treeObj1.rendered && this.treeObj1
										&& !this.readOnly) {
									Ext.defer(function() {
												this.treeObj1.render("tree3");
											}, 300, this);
								}
							}
						});
				this.treeObj1 = new Ext.tree.Panel({
					border : true,
					width : 250,
					height : 200,
					split : true,
					rootVisible : false,
					autoScroll : true,
					store : Ext.create('Ext.data.TreeStore', {
						root : {
							id : 'rootNode',
							text : "所有部门",
							expanded : false
						},
						proxy : new Ext.data.HttpProxy({
									url : 'yhgl/GetComboTree',
									method : 'post',
									reader : {
										type : 'json'
									}
								}),
						listeners : {
							'beforeload' : function(_store) {
								// 在数据加载之前设置向后台发送的参数
								var new_params = { // 参数
									'parent' : 'rootNode'
								};
								Ext.apply(_store.proxy.extraParams, new_params);
							}
						}
					})
				});
				this.treeObj1.on('itemclick', function(view, rec) {
							if (rec) {
								this.setValue(this.CtxtValue = rec.get('text'));
								this.CidValue = rec.get('id');
								this.collapse();
							}
						}, this);
			}
		});
		var updateForm = Ext.create('Ext.form.FormPanel', {
			id : me.id + '_updatejs',
			title : "修改用户",
			titleAlign : "left",
			frame : false,
			border : false,
			plain : true,
			region : 'center',
			defaults : {
				xtype : 'textfield'
			},
			tbar : [{
						text : '更新',
						iconCls : 'icon-save',
						handler : function() {
							me.modifyJs(record, flag);
							me.saveJs(record, flag)
						}
					}, {
						text : '返回',
						iconCls : 'icon-reback',
						handler : function() {
							me.centerPanelDo(me.getEdTree());
						}
					}],
			items : [{
						xtype : 'panel',
						layout : 'column',
						width : 600,
						height : 60,
						border : false,
						items : [{
									xtype : 'panel',
									width : 250,
									layout : 'form',
									border : false,
									padding : 10,
									defaultType : 'textfield',
									items : [{
												name : 'userId',
												fieldLabel : '帐号',
												width : 120,
												labelWidth : 60,
												labelAlign : 'right',
												allowBlank : false,
												id : 'id1',
												readOnly : true,
												maxLength : 20,
												maxLengthText : '帐号长度不能超过20个字符',
												minLength : 2,
												minLengthText : '帐号长度不能少于2个字符',
												blankText : '该项必填'
											}, {
												name : 'username',
												fieldLabel : '姓名',
												width : 120,
												labelWidth : 60,
												labelAlign : 'right',
												id : 'usernameId1',
												allowBlank : false,
												minLength : 2,
												minLengthText : '用户名长度不能少于2个字符',
												maxLength : 15,
												maxLengthText : '用户名长度不能超过15个字符',
												blankText : '该项必填'
											}]
								}, {
									xtype : 'panel',
									width : 250,
									layout : 'form',
									border : false,
									padding : 10,
									defaultType : 'textfield',
									items : [{
												inputType : 'password',
												id : 'pass3',
												name : 'password',
												width : 120,
												labelWidth : 60,
												labelAlign : 'right',
												fieldLabel : '密码',
												allowBlank : false,
												maxLength : 30,
												maxLengthText : '密码长度不能超过30个字符',
												minLength : 6,
												minLengthText : '密码长度不能少于6个字符',
												blankText : '该项必填'

											}, {
												width : 120,
												labelWidth : 60,
												labelAlign : 'right',
												inputType : 'password',
												name : 'confirmPassword',
												fieldLabel : '确认密码',
												id : 'pass4',
												allowBlank : false,
												maxLength : 30,
												maxLengthText : '密码长度不能超过30个字符',
												minLength : 5,
												minLengthText : '密码长度不能少于6个字符',
												blankText : '该项必填',
												initialPassField : 'pass',
												vtype : "repetition",
												repetition : {
													targetCmpid : 'pass3'
												}
											}]
								}]
					}, {
						xtype : 'radiogroup',
						width : 250,
						labelWidth : 70,
						labelAlign : 'right',
						fieldLabel : '性别',
						items : [{
									boxLabel : '男',
									inputValue : '1',
									id : 'sexId1',
									name : 'sex',
									checked : true
								}, {
									boxLabel : '女',
									inputValue : '0',
									name : 'sex'
								}]
					}, {
						xtype : 'radiogroup',
						width : 250,
						labelWidth : 80,
						labelAlign : 'right',
						fieldLabel : '账号是否有效',
						items : [{
									boxLabel : '是',
									id : 'flagId1',
									inputValue : '1',
									name : 'flag',
									checked : true
								}, {
									boxLabel : '否',
									inputValue : '0',
									name : 'flag'
								}]
					}, {
						xtype : 'combo',
						id : 'roleId1',
						fieldLabel : '权限',
						width : 250,
						labelWidth : 70,
						labelAlign : 'right',
						name : 'role',
						store : roleStore,
						editable : true,
						queryMode : 'local',
						displayField : 'name',
						valueField : 'value',
						forceSelection : true,
						triggerAction : 'all',
						emptyText : '请选择...',
						selectOnFocus : true,
						autoShow : true,
						allowBlank : false,
						blankText : '该项必填'
					}, new TreeComboBox1]
		});
		me.centerPanelDo(updateForm);
		Ext.apply(Ext.form.field.VTypes, {
					repetition : function(val, field) {
						if (field.repetition) {
							var cmp = Ext.getCmp(field.repetition.targetCmpid);
							if (Ext.isEmpty(cmp)) {
								Ext.MessageBox.show({
											title : '错误',
											msg : '发生异常，指定的组件未找到',
											icon : Ext.Msg.ERROR,
											buttons : Ext.Msg.OK
										});
								return false;
							}
							if (val == cmp.getValue()) {
								return true;
							} else {
								return false;
							}
						}
					},
					repetitionText : '两次密码输入不一致'
				});
	},
	/**
	 * 更新用户
	 * 
	 * @return {}
	 */
	modifyJs : function(record, flag) {
		var me = this;
		var userId1 = Ext.getCmp("id1").getValue();
		var username1 = Ext.getCmp("usernameId1").getValue();
		var password1 = Ext.getCmp("pass3").getValue();
		var confirPassword1 = Ext.getCmp("pass4").getValue();
		var sex1 = Ext.getCmp("sexId1").getGroupValue();
		var flag1 = Ext.getCmp("flagId1").getGroupValue();
		var role1 = Ext.getCmp("roleId1").getValue();
		var csid1 = Ext.getCmp("cs_com").getCidValue();

		Ext.Ajax.request({
			url : 'yhgl/ModifyUser',
			params : {
				userId1 : userId1,
				username1 : username1,
				flag1 : flag1,
				sex1 : sex1,
				role1 : role1,
				password1 : password1,
				csid1 : csid1,
				confirPassword1 : confirPassword1
			},
			success : function(response, options) {
				var jsonobject = Ext.JSON.decode(response.responseText);
				if (jsonobject.success) {
					if (jsonobject.data.rs == 1) {
						Ext.MessageBox.show({
									title : '成功',
									msg : '用户更新成功',
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.OK
								});
						me.centerPanelDo(me.getEdTree());
					}
					if (jsonobject.data.rs == 2) {
						Ext.MessageBox.show({
									title : '失败',
									msg : '更新失败，请检查',
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.ERROR
								});
					}
				} else {
					Ext.MessageBox.show({
								title : '异常',
								msg : json.msg,
								buttons : Ext.MessageBox.OK,
								icon : Ext.MessageBox.ERROR
							});
				}
			},
			failure : function(response, options) {
				if (action.failureType == Ext.form.Action.SERVER_INVALID) {
					var jsonobject = Ext.JSON.decode(response.responseText);
					if (jsonobject.errors.type == '1') {
						Ext.MessageBox.show({
									title : '警告',
									msg : jsonobject.errors.message,
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.WARNING
								});
					} else if (jsonobject.errors.type == '2') {
						Ext.MessageBox.show({
									title : '错误',
									msg : jsonobject.errors.message,
									buttons : Ext.MessageBox.OK,
									icon : Ext.MessageBox.ERROR
								});
					} else if (jsonobject.errors.type == '3') {

						loginWindow.setMessage(jsonobject.errors.message);
						loginWindow.show();
					}
				} else if (action.failureType == Ext.form.Action.CONNECT_FAILURE) {
					Ext.MessageBox.show({
								title : '错误',
								msg : '服务器连接失败，请稍候再试！',
								buttons : Ext.MessageBox.OK,
								icon : Ext.MessageBox.ERROR
							});
				}
			}

		})
	},
	/**
	 * 用户列表
	 * 
	 */
	getEdTree : function() {
		var me = this;
		var userpanel = Ext.create('Ext.panel.Panel', {
					title : '用户窗口',
					id : me.id + '_edTree',
					border : false,
					layout : 'fit',
					height : 520,
					store : me.edTreeStore,
					rootVisible : false,
					items : [me.getUser()]

				});
		return userpanel;
	},
	/**
	 * 用户信息表单frompanel
	 * 
	 */
	getFrom : function() {
		var me = this;
		var fp = Ext.create('Ext.form.Panel', {
					id : 'f'

				});

		return from;
	},
	centerPanelDo : function(el) {
		var me = this;
		var centerPanel = Ext.getCmp(me.id + '_center');
		centerPanel.removeAll();
		centerPanel.add(el);
		centerPanel.doLayout();
	},

	/**
	 * 主界面
	 * 
	 * @return {}
	 */

	getView : function() {
		var me = this;
		var tree = this.getTree();
		var view = Ext.create('Ext.panel.Panel', {
					border : false,
					id : me.id,
					layout : 'border',
					autoScroll : true,
					items : [{
								xtype : 'panel',
								layout : 'fit',
								border : false,
								region : 'west',
								autoScroll : true,
								items : [tree]
							}, {
								xtype : 'panel',
								layout : 'fit',
								border : false,
								region : 'center',
								autoScroll : true,
								id : me.id + '_center',
								items : [me.getEdTree()]
							}]
				});
		return view;
	}
}